Fonksiyon Çağırma Mekanizması

RISC-V'de fonksiyon çağrısı jal ve jalr komutlarıyla yapılır.

jal  ra, function    # ra = PC+4, PC = function
jalr x0, ra, 0       # return: PC = ra

Calling Convention

Register Kullanım Koruma
a0-a7 Argümanlar/dönüş Caller
t0-t6 Geçici Caller
s0-s11 Saved Callee
ra Return address Callee
sp Stack pointer Callee

Stack Yönetimi

# Prologue (fonksiyon girişi)
addi sp, sp, -16     # Stack'te yer aç
sw   ra, 12(sp)        # ra'yı kaydet
sw   s0, 8(sp)         # s0'ı kaydet

# Epilogue (fonksiyon çıkışı)
lw   s0, 8(sp)         # s0'ı geri yükle
lw   ra, 12(sp)        # ra'yı geri yükle
addi sp, sp, 16      # Stack'i geri al
jalr x0, ra, 0        # return

Recursive Fonksiyon Örneği

Her recursive çağrıda yeni bir stack frame oluşturulur. ra ve gerekli s register'ları kaydedilir.